--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
meshchatx/src/backend/interface_editor.py 30d95f7e6cc32c4af1fac7cc154ad3319d1ccee4 (30d95f7e) Text, 1.50 KB
T8b949e# SPDX-License-Identifier: 0BSD AND MIT
Tff7b72def Td2a8ffcoerce_rnode_frequency_hzTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4:
T8b949e"""Return RNode carrier frequency as integer Hz for Reticulum config.
Reticulum reads ``frequency`` with ``int()``; MHz-style decimals (868.825)
must not be stored verbatim or they truncate to invalid values. Accepts
Hz integers, bare MHz-style numbers below 1e6, and strings with optional
ghz/mhz/khz/hz suffix (ASCII, case-insensitive).
"""
Tff7b72if Te6edf3value Tff7b72is Tff7b72None Tff7b72or Te6edf3value Tff7b72== Ta5d6ff"Ta5d6ff"Tb4b4b4:
Tff7b72return Te6edf3value
Te6edf3raw Tff7b72= Tffa657strTb4b4b4(Te6edf3valueTb4b4b4)Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Te6edf3s Tff7b72= Te6edf3rawTff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff_Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)
Te6edf3mult Tff7b72= T79c0ff1.0
Tff7b72for Te6edf3suffixTb4b4b4, Te6edf3m Tff7b72in Tb4b4b4(Tb4b4b4(Ta5d6ff"Ta5d6ffghzTa5d6ff"Tb4b4b4, T79c0ff1e9Tb4b4b4)Tb4b4b4, Tb4b4b4(Ta5d6ff"Ta5d6ffmhzTa5d6ff"Tb4b4b4, T79c0ff1e6Tb4b4b4)Tb4b4b4, Tb4b4b4(Ta5d6ff"Ta5d6ffkhzTa5d6ff"Tb4b4b4, T79c0ff1e3Tb4b4b4)Tb4b4b4, Tb4b4b4(Ta5d6ff"Ta5d6ffhzTa5d6ff"Tb4b4b4, T79c0ff1.0Tb4b4b4)Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3sTff7b72.Td2a8ffendswithTb4b4b4(Te6edf3suffixTb4b4b4)Tb4b4b4:
Te6edf3s Tff7b72= Te6edf3sTb4b4b4[Tb4b4b4: Tff7b72-Tffa657lenTb4b4b4(Te6edf3suffixTb4b4b4)Tb4b4b4]Tff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)
Te6edf3mult Tff7b72= Te6edf3m
Tff7b72break
Te6edf3f Tff7b72= Tffa657floatTb4b4b4(Te6edf3sTb4b4b4) Tff7b72* Te6edf3mult
Tff7b72if Te6edf3f Tff7b72<Tff7b72= T79c0ff0Tb4b4b4:
Tff7b72return Tffa657intTb4b4b4(Tffa657roundTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4)
Tff7b72if Te6edf3f Tff7b72>Tff7b72= T79c0ff1_000_000Tb4b4b4:
Tff7b72return Tffa657intTb4b4b4(Tffa657roundTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4)
Te6edf3is_integer Tff7b72= Tffa657absTb4b4b4(Te6edf3f Tff7b72- Tffa657roundTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4) Tff7b72< T79c0ff1e-9
Tff7b72if Tb4b4b4(Tff7b72not Te6edf3is_integerTb4b4b4) Tff7b72or Tb4b4b4(Te6edf3is_integer Tff7b72and Te6edf3f Tff7b72< T79c0ff10_000Tb4b4b4)Tb4b4b4:
Te6edf3f Tff7b72*Tff7b72= T79c0ff1_000_000.0
Tff7b72return Tffa657intTb4b4b4(Tffa657roundTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4)
Tff7b72class T56d364InterfaceEditorTb4b4b4:
Te6edf3coerce_rnode_frequency_hz Tff7b72= Tffa657staticmethodTb4b4b4(Te6edf3coerce_rnode_frequency_hzTb4b4b4)
Tf0883e@staticmethod
Tff7b72def Td2a8ffupdate_valueTb4b4b4(Te6edf3interface_detailsTb4b4b4: Tffa657dictTb4b4b4, Te6edf3dataTb4b4b4: Tffa657dictTb4b4b4, Te6edf3keyTb4b4b4: Tffa657strTb4b4b4)Tb4b4b4:
T8b949e# update value if provided and not empty
Te6edf3value Tff7b72= Te6edf3dataTff7b72.Td2a8ffgetTb4b4b4(Te6edf3keyTb4b4b4)
Tff7b72if Te6edf3value Tff7b72is Tff7b72not Tff7b72None Tff7b72and Te6edf3value Tff7b72!= Ta5d6ff"Ta5d6ff"Tb4b4b4:
Te6edf3interface_detailsTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Te6edf3value
Tff7b72return
T8b949e# otherwise remove existing value
Te6edf3interface_detailsTff7b72.Td2a8ffpopTb4b4b4(Te6edf3keyTb4b4b4, Tff7b72NoneTb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────